package com.sky.business.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sky.business.sys.domain.CameraConfig;

import java.util.Date;
import java.util.List;

public interface CameraConfigService extends IService<CameraConfig> {

    /**
     * 根据设备id查询设备
     * @param deviceId 设备id
     * @return 设备信息
     */
    CameraConfig findByDeviceId(String deviceId);


    /**
     * 根据设备id列表查询设备列表
     * @param deviceIdList 设备id列表
     * @return 设备列表
     */
    List<CameraConfig> findByDeviceIdIn(List<String> deviceIdList);

    /**
     * 根据ip查询设备
     * @param ip ip地址
     * @param port 端口
     * @return 设备
     */
    CameraConfig findByIpAddrAndPort(String ip,int port);

    /**
     * 查询所有空闲设备
     * @param lastHeartbeat 心跳时间
     * @return  空闲设备列表
     */
    List<CameraConfig> listIdleCamera(Date lastHeartbeat);


    /**
     * 查询指定设备中空闲的设备
     * @param deviceIdList 设备列表
     * @param lastHeartbeat 心跳时间
     * @return 空闲设备列表
     */
    List<CameraConfig> listIdleByDeviceIn(List<String> deviceIdList,Date lastHeartbeat);


    /**
     * 更新心跳时间
     * @param cameraConfigId 设备信息ID
     * @param heartbeatTime 心跳时间
     */
    void updateHeartbeat(Long  cameraConfigId,Date heartbeatTime);

    /**
     * 更新onvif设备信息
     * @param cameraConfigId 设备信息ID
     * @param manufacturer 生产商
     * @param model 型号
     * @param firmwareVersion 固件版本
     * @param serialNumber 序列号
     */
    void updateOnvifDeviceInfo(Long cameraConfigId,String manufacturer,String model, String firmwareVersion,String serialNumber);
}
